/*
 * Attributes.hpp
 *
 *  Created on: Dec 10, 2013
 *      Author: paste
 */

#ifndef ATTRIBUTES_HPP_
#define ATTRIBUTES_HPP_

namespace saxpp
{
  template<class CH = char, class TRAITS = std::char_traits<CH> >
    class Attributes
    {
      typedef CH char_type;
      typedef TRAITS char_traits;
      typedef std::basic_string<char_type, char_traits> string_type;

      virtual
      ~Attributes()
      {
      }

      virtual int
      getIndex(const string_type &qName) = 0;

      virtual int
      getIndex(const string_type &uri, const string_type &localName) = 0;

      virtual int
      getLength() = 0;

      virtual string_type
      getLocalName(const int &index) = 0;

      virtual string_type
      getQName(const int &index) = 0;

      virtual string_type
      getType(const int &index) = 0;

      virtual string_type
      getType(const string_type &qName) = 0;

      virtual string_type
      getType(const string_type &uri, const string_type &localName) = 0;

      virtual string_type
      getURI(const int &index) = 0;

      virtual string_type
      getValue(const int &index) = 0;

      virtual string_type
      getValue(const string_type &qName) = 0;

      virtual string_type
      getValue(const string_type &uri, const string_type &localName) = 0;
    };

}

#endif /* ATTRIBUTES_HPP_ */
